001 /** 002 * Created by IntelliJ IDEA. 003 * User: Wei Wang 004 * Date: Dec 4, 2002 005 * Time: 8:51:17 PM 006 */ 007 008 package EVolve.visualization.XYViz.ValValViz; 009 010 import EVolve.visualization.*; 011 import EVolve.visualization.Dimension; 012 import EVolve.data.Element; 013 import EVolve.Scene; 014 015 import javax.swing.*; 016 import java.awt.event.*; 017 import java.awt.*; 018 019 public class MetricViz extends ValueValueVisualization{ 020 private JMenuItem itemSelectTimeFrame; 021 private JTextField textIntervalX, textIntervalY; 022 private int intervalY; 023 024 public MetricViz() { 025 super(); 026 interval = 1; 027 intervalY = 1000000; 028 } 029 030 public Dimension[] createDimension() { 031 Dimension[] returnVal = new Dimension[2]; 032 xAxis = new ValueDimension(); 033 yAxis = new ValueDimension(); 034 035 returnVal[0] = xAxis; 036 returnVal[1] = yAxis; 037 038 return returnVal; 039 } 040 041 public JMenuItem[] createSelectionMenuItem() { 042 itemSelectTimeFrame = new JCheckBoxMenuItem("Time Frame"); 043 itemSelectTimeFrame.setMnemonic(KeyEvent.VK_T); 044 itemSelectTimeFrame.setSelected(true); 045 itemSelectTimeFrame.setEnabled(false); 046 047 048 JMenuItem[] items = new JMenuItem[1]; 049 items[0] = itemSelectTimeFrame; 050 051 return items; 052 } 053 054 protected JPanel createConfigurationPanel() { 055 JPanel configurationPanel = new JPanel(new GridLayout(2, 1, 5, 5)); 056 057 JPanel panelIntervalX = new JPanel(new FlowLayout()); 058 panelIntervalX.add(new JLabel("Interval X: ")); 059 060 textIntervalX = new JTextField(String.valueOf(interval), 10); 061 panelIntervalX.add(textIntervalX); 062 063 JPanel panelIntervalY = new JPanel(new FlowLayout()); 064 panelIntervalY.add(new JLabel("Interval Y: ")); 065 066 textIntervalY = new JTextField(String.valueOf(intervalY), 10); 067 panelIntervalY.add(textIntervalY); 068 069 configurationPanel.add(panelIntervalX); 070 configurationPanel.add(panelIntervalY); 071 072 return configurationPanel; 073 } 074 075 protected void updateConfiguration() { 076 try { 077 if (autoInterval != -1) { 078 interval = autoInterval; 079 autoInterval = -1; 080 } else { 081 interval = Integer.parseInt(textIntervalX.getText()); 082 intervalY = Integer.parseInt(textIntervalY.getText()); 083 } 084 085 super.updateConfiguration(); 086 canvas.setName("Bytecode", "Miss rate"); 087 } catch (NumberFormatException e) { 088 Scene.showErrorMessage("Interval must be an integer"); 089 configure(); 090 } 091 } 092 093 094 public void preVisualize() { 095 super.preVisualize(); 096 image = new AutoImage(); 097 installPainter(); 098 } 099 100 public void receiveElement(Element element) { 101 if (element.isOptional()) return; 102 103 long x = xAxis.getField(element); 104 long y = yAxis.getField(element); 105 106 if (xOffset == -1) xOffset = x; 107 108 painter.paint(image,(x-xOffset)/interval,y/intervalY,0); 109 } 110 111 public void visualize() { 112 sort(); 113 } 114 115 public void mouseMove(int x, int y) { 116 117 } 118 119 public void makeSelection() { // nothing to be selected in this viz 120 } 121 122 public Object clone() { 123 MetricViz o = (MetricViz)super.clone(); 124 o.dimension[0] = o.xAxis; 125 o.dimension[1] = o.yAxis; 126 127 return o; 128 } 129 }